#ifndef FRAME_H
#define FRAME_H

#include <glm/glm.hpp>
#include <glm/gtc/matrix_transform.hpp>

class Frame
{
public:
    Frame();
    glm::mat4 local_to_world();
    glm::mat4 world_to_local();

    glm::mat4 m_to_world_matrix;
    glm::mat4 m_to_local_matrix;

    glm::vec4 m_scale_factors;

    glm::mat4 m_world_scale;
    glm::mat4 m_local_scale;

    glm::vec3 m_rotate_axis;
    float m_x_angle;
    float m_y_angle;
    float m_z_angle;

    glm::vec4 m_origin;

    bool m_update;

    void rotate(float angle, glm::vec3 axis);
    void translate(float x, float y, float z);
    void scale(float x, float y, float z);
    void load_identity();
};

#endif // FRAME_H
